<HTML><HEAD><TITLE>store_inc(+StoreHandle, ++Key)</TITLE>
</HEAD><BODY>[ <A HREF="index.html">Non-logical Variables, Arrays, Bags, Shelves and Stores</A> | <A HREF="../../index.html">Reference Manual</A> | <A HREF="../../fullindex.html">Alphabetic Index</A> ]
<H1>store_inc(+StoreHandle, ++Key)</H1>
Increment an integral entry within a store object
<DL>
<DT><EM>StoreHandle</EM></DT>
<DD>A store handle or store name
</DD>
<DT><EM>Key</EM></DT>
<DD>A ground term
</DD>
</DL>
<H2>Description</H2>
	This looks up an entry under a given key in a given store object, and
	if such an entry exists, and is of integer type, it is incremented by
	one.  If no entry exists, an entry with integer value 1 is created.
<P>
	This predicate is a shorthand for:
<PRE>
	store_inc(Handle, Key) :-
	    ( store_get(Handle, Key, C0) ->
		C1 is C0 + 1,
		store_set(Handle, Key, C1)
	    ;
		store_set(Handle, Key, 1)
	    ).
</PRE>
	Note: If StoreHandle is not a handle, then it must be an atom or a
	compound term, and the store is identified by this term's toplevel
	functor together with the context module.
    
<H3>Modes and Determinism</H3><UL>
<LI>store_inc(+, ++) is det
</UL>
<H3>Modules</H3>
This predicate is sensitive to its module context (tool predicate, see @/2).
<H3>Exceptions</H3>
<DL>
<DT><EM>(4) instantiation fault </EM>
<DD>StoreHandle is uninstantiated
<DT><EM>(4) instantiation fault </EM>
<DD>Key is not a ground term
<DT><EM>(5) type error </EM>
<DD>StoreHandle is neither atom nor compound term nor store handle
<DT><EM>(45) record does not exist </EM>
<DD>StoreHandle is not the name of a store
</DL>
<H2>Examples</H2>
<PRE>
    ?- store_create(Handle),
       store_set(Handle, count, 7),
       store_inc(Handle, count),
       store_get(Handle, count, N).
    Handle = 'STORE'(16'00334e20)
    N1 = 8
    Yes (0.00s cpu)

    ?- store_create(Handle),
       store_inc(Handle, foo),
       store_get(Handle, foo, N).
    Handle = 'STORE'(16'00334e20)
    N = 1
    Yes (0.00s cpu)
    </PRE>
<H2>See Also</H2>
<A HREF="../../kernel/storage/store-1.html">store / 1</A>, <A HREF="../../kernel/modules/local-1.html">local / 1</A>, <A HREF="../../kernel/storage/store_set-3.html">store_set / 3</A>, <A HREF="../../kernel/storage/store_get-3.html">store_get / 3</A>, <A HREF="../../kernel/storage/store_delete-2.html">store_delete / 2</A>, <A HREF="../../kernel/storage/store_contains-2.html">store_contains / 2</A>, <A HREF="../../kernel/storage/stored_keys-2.html">stored_keys / 2</A>, <A HREF="../../kernel/storage/stored_keys_and_values-2.html">stored_keys_and_values / 2</A>, <A HREF="../../kernel/storage/store_create-1.html">store_create / 1</A>, <A HREF="../../kernel/storage/store_count-2.html">store_count / 2</A>
</BODY></HTML>
